package CollectionDemo;

import java.util.ArrayList;

public class ArrayListDemo {
    public static void main(String[] args) {
        Object[] objects = {};
        System.out.println(objects.length);
        //底层数组elementData长度是0
        ArrayList arrayList = new ArrayList();
        /*首次添加元素，数组长度不够，扩容，minCapacity = 1; newCapacity = 0 * 1.5 = 0;
        min 是大于new的，又因为elementData.length() == 0; 比较min与默认初始化容量(10)的大小，min < default, 返回default = 10,首次扩容底层数组长度为10.
         */
        arrayList.add(0);
        for (int i = 1; i < 10; i++) {
            arrayList.add(i);
        }
        System.out.println(arrayList);
        ArrayList arrayList1 = new ArrayList();
        for (int j = 0; j < 6; j++) {
            arrayList1.add(j);
        }
        /*
        这里添加元素，minCapacity = 16； 扩容是newCapacity = 10 * 1.5 = 15； min > new的 ，返回min
        可以看到底层数组elementData长度是16.
         */
        arrayList.addAll(arrayList1);
        System.out.println(arrayList);
        /*
        原来elementData的长度是16，元素个数是16，空间不足，得扩容， min = 17 new = 16 * 1.5 = 24, new > min < Integer.MAX 返回new
        新的elementData的长度为24
         */
        arrayList.add(17);

    }
}
